package cn.org.xwb.common.utils;

import cn.org.xwb.common.encrypt.annotation.rsa.RsaDe;
import cn.org.xwb.common.encrypt.annotation.rsa.RsaDeObj;
import cn.org.xwb.common.valid.annotation.str.StrMaxLen;
import cn.org.xwb.common.valid.annotation.str.StrMaxLenObj;
import cn.org.xwb.common.valid.annotation.str.StrNotNull;
import cn.org.xwb.common.valid.annotation.str.StrNotNullObj;
import org.springframework.stereotype.Component;

/**
 * 根据注解对对象进行处理
 *
 * @param <T>
 */
@Component
public class ObjUtilWithAspect<T> {

    /**
     * 判断对象中被标记的字符串字段是否都不为空
     *
     * @param obj
     * @return
     */
    @StrNotNull
    public T objStrNotNull(@StrNotNullObj T obj) {return obj;}

    /**
     * 对对象中被标记的字段进行 RSA 解密
     *
     * @param obj
     * @return
     */
    @RsaDe
    public T objRsaDe(@RsaDeObj T obj) {return obj;}

    /**
     * 对对象中被标记的字符串字段进行是否都在限制的最大长度内判断
     *
     * @param obj
     * @return
     */
    @StrMaxLen
    public T objStrMaxLen(@StrMaxLenObj T obj) {return obj;}

}
